package com.djzh.insightconnector.mockproject.domain;

import lombok.Data;

/**
 * 证书申请请求实体类
 */
@Data
public class CertApplyRequest {

    /**
     * 业务ID类型（必填）
     * 7-主体申请证书 8-连接器申请证书 9-业务节点申请证书
     */
    private String processType;

    /**
     * 业务ID（必填）
     * 注册返回流水号
     */
    private String processId;

    /**
     * 企业Id（必填）
     */
    private String entId;

    /**
     * 证书算法类型（必填）
     * 0-RSA 1-SM2 2-ECC
     */
    private Integer algType;

    /**
     * 证书存储类型（必填）
     * 1-P12 2-cer
     */
    private Integer certStorageType;

    /**
     * 证书种类（必填）
     * 4:企业普通证书 5:企业服务器证书
     */
    private Integer certSort;

    /**
     * 证书csr请求（pem格式，非必填）
     */
    private String csr;

    /**
     * 服务器证书的域名或IP（非必填，仅服务器证书需要）
     */
    private String ipAddress;

    /**
     * 证书使用者的通用名（非必填）
     */
    private String cn;

    /**
     * 证书使用者归属的组织部门名（非必填，多值用#分隔）
     */
    private String ou;

    /**
     * 证书使用者归属的组织名（非必填，多值用#分隔）
     */
    private String o;

    /**
     * 证书使用者所在的城市名（非必填，示例: GZ）
     */
    private String l;

    /**
     * 证书使用者所在的省名（非必填，示例: GD）
     */
    private String s;

    /**
     * 证书使用者所在的国家缩写（非必填，示例: CN）
     */
    private String c;

    /**
     * 所属企业主体信息（必填）
     */
    private Corporation corporation;

    /**
     * 经办人信息（必填）
     */
    private Connector connector;

    /**
     * 申请附件信息（非必填）
     */
    private Annex annex;

    /**
     * 企业主体信息内部类
     */
    @Data
    public static class Corporation {
        /**
         * 企业组织机构代码（必填）
         */
        private String orgCode;

        /**
         * 企业名称（必填）
         */
        private String orgName;

        /**
         * 法人姓名（必填）
         */
        private String pesName;

        /**
         * 法人证件类型（必填）
         * 1-身份证 2-军官证 3-护照 4-士兵证 5-外交官证 6-武警警官证 7-其他
         */
        private String cardType;

        /**
         * 法人证件号码（必填）
         */
        private String cardNO;

        /**
         * 法人手机号（必填，国内可用）
         */
        private String mobileNO;

        /**
         * 企业电子邮箱（必填，可用）
         */
        private String email;

        /**
         * 公司联系地址（必填）
         */
        private String address;
    }

    /**
     * 经办人信息内部类
     */
    @Data
    public static class Connector {
        /**
         * 经办人姓名（必填）
         */
        private String connectorName;

        /**
         * 经办人证件类型（必填）
         * 1-身份证 2-军官证 3-护照 4-士兵证 5-外交官证 6-武警警官证 7-其他
         */
        private String connectorCardType;

        /**
         * 经办人证件号码（必填）
         */
        private String connectorCardNO;

        /**
         * 经办人手机号（必填，国内可用）
         */
        private String connectorMobileNO;

        /**
         * 经办人电子邮箱（必填，可用）
         */
        private String connectorEmail;

        /**
         * 经办人公司联系地址（必填）
         */
        private String connectorAddress;
    }

    /**
     * 申请附件信息内部类
     */
    @Data
    public static class Annex {
        /**
         * 证书申请表图片hex（非必填，只接受图片）
         */
        private String certApplyFormHex;

        /**
         * 申请人/经办人证件扫描件hex（非必填）
         */
        private String cardPicHex;

        /**
         * 企业组织结构代码证书hex（非必填）
         */
        private String orgPicHex;

        /**
         * 服务器证书域名授权信扫描件hex（非必填，仅服务器证书需要）
         */
        private String domainAccreditHex;
    }
}